package day7;

import java.util.*;

public class Homework {
    public static void main(String[] args) {
        demo2();
    }
    //a.定义一个User类  属性: id  name  userinfo   和
    //  UserInfo类 属性 id sex age
    //   定义一个List存储10个User对象  数据可以 自行添加
    //   通过迭代器的方式遍历出来集合的每个元素 中的id name sex age属性
    public static void demo1(){
        List<User> list=new ArrayList<>();
        Random r=new Random();
        for(int i=0;i<10;i++) {
            String name=getName(r);  //随机几个长度的字母
            String sex=r.nextInt(2)==1?"男":"女";   //随机男女
            Integer age=r.nextInt(100)+1;  //随机1-100
            list.add(new User(i+1,name,new UserInfo(i+1,sex,age)));
        }
        Iterator<User> it=list.iterator();
        while(it.hasNext()){
            User u=it.next();
            System.out.println(u);
        }
    }
    public static String getName(Random r){
        StringBuilder sb=new StringBuilder("");
        for(int i=0;i<3;i++){
            sb.append((char)(r.nextInt(26)+65));//65-90   A-Z
        }
        return sb.toString();
    }
    //b.通过Map集合实现 打印购物小票
    //   输入购买的商品名称 再输入购买商品的花费的金额
    //   最后统计结果 如下:
    //   商品名称   个数    总价
    //     烤鸭     2      100
    //     鞋子     2      500
    //     ....
    //   总价: 600
    public static void demo2(){
        Map<String,Goods> map=new HashMap<>();
        Scanner sc=new Scanner(System.in);
        while(true){
            System.out.println("请输入购买的商品名称,esc退出");
            String name=sc.next();
            if("esc".equals(name)) break;
            System.out.println("请输入购买的商品数量");
            int num=sc.nextInt();
            double price=0;
            if(map.containsKey(name)) {
                //买过:单价就用原来的 购买数量要累加
                price=map.get(name).price;
                num=map.get(name).num+num;
            }else{ //没有买过:单价手动输入 购买数量就是输入的数量
                System.out.println("请输入商品的单价");
                price = sc.nextDouble();
            }
            map.put(name,new Goods(name,num,price));
        }
        System.out.println("购买结束: 商品清单如下:");
        System.out.println("商品名称\t个数\t总价:");
        double sum=0;
        for(String key:map.keySet()){
            Goods value=map.get(key);
            sum+=value.num*value.price;
            System.out.println(key+"\t"+value.num+"\t"+(value.num*value.price));
        }
        System.out.println("支付金额:"+sum);
    }
}
class Goods{//商品对象
    String name;
    Integer num;//数量
    double price;//单价
    public Goods(String name, Integer num, double price) {
        this.name = name;
        this.num = num;
        this.price = price;
    }
}
class User{
    Integer id;
    String name;
    UserInfo info;
    public User(Integer id, String name, UserInfo info) {
        this.id = id;
        this.name = name;
        this.info = info;
    }
    public String toString() {
        String str=id+"\t"+name+"\t"+info.sex+"\t"+info.age;
        return str;
    }
}
class UserInfo{
    Integer id;
    String sex;
    Integer age;

    public UserInfo(Integer id, String sex, Integer age) {
        this.id = id;
        this.sex = sex;
        this.age = age;
    }
}